from transformers import AutoModelForCausalLM, AutoTokenizer
from PIL import Image
import torch

# 指定本地模型路径
model_path = "./qwen2.5_vl_7B"

# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype=torch.float16,  # 使用 FP16 精度以减少显存占用
    device_map="auto"  # 自动将模型分配到可用的 GPU 设备上
).eval()

# 加载图片
image_path = "1.jpeg"
image = Image.open(image_path).convert('RGB')

# 准备输入
query = tokenizer.from_list_format([
    {'image': image, 'text': '描述图片，使用中文'}
], add_generation_prompt=True, return_tensors="pt")

# 将输入移动到模型所在的设备
query = {k: v.to(model.device) for k, v in query.items()}

# 生成响应
with torch.no_grad():
    outputs = model.generate(**query, max_length=256)

